package com.hzh.cusviewdemo.Base;

import com.hzh.cusviewdemo.Bean.MusicData;
import com.hzh.cusviewdemo.Bean.MusicInfoData;
import com.hzh.cusviewdemo.Bean.MusicSearchData;
import com.hzh.cusviewdemo.Bean.UpdateData;
import com.hzh.cusviewdemo.Presenter.MusicCommentData;
import com.hzh.cusviewdemo.Presenter.MusicInfoResponse;
import com.hzh.cusviewdemo.Presenter.MusicResponse;
import com.hzh.cusviewdemo.Presenter.SearchResponse;
import com.hzh.cusviewdemo.Presenter.TodayMusicResponse;

import java.util.List;

import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * 接口相关
 */
public interface ApiService {

    /**
     * 获取分类列表
     *
     * @return
     */
    @GET("API/app_index/Item_bank_category.php")
    Call<ApiResponse> getCategory();


    /**********************************关于歌曲的接口***********************************/
    // https://search.kuwo.cn/r.s?pn=0&rn=30&all=%E6%81%8B%E4%BA%BA%E5%BF%83&ft=music&newsearch=1&alflac=1&itemset=web_2013&client=kt&cluster=0&vermerge=1&rformat=json&encoding=utf8&show_copyright_off=1&pcmp4=1&ver=mbox&plat=pc&vipver=MUSIC_9.1.1.2_BCS2&devid=38668888&newver=1&issubtitle=1&pcjson=1

    /**
     * 获取歌曲列表
     *
     * @return
     */
    @GET("r.s")
    Call<MusicResponse> getMusicList(@Query("pn") String pn,
                                     @Query("rn") String rn,
                                     @Query("all") String all,
                                     @Query("ft") String ft,
                                     @Query("newsearch") String newsearch,
                                     @Query("alflac") String alflac,
                                     @Query("itemset") String itemset,
                                     @Query("client") String client,
                                     @Query("cluster") String cluster,
                                     @Query("vermerge") String vermerge,
                                     @Query("rformat") String rformat,
                                     @Query("encoding") String encoding,
                                     @Query("show_copyright_off") String show_copyright_off,
                                     @Query("pcmp4") String pcmp4,
                                     @Query("ver") String ver,
                                     @Query("plat") String plat,
                                     @Query("vipver") String vipver,
                                     @Query("devid") String devid,
                                     @Query("newver") String newver,
                                     @Query("issubtitle") String issubtitle,
                                     @Query("pcjson") String pcjson);

    /**
     * 获取歌曲对应的url
     *
     * @param rid 歌曲ID 如MUSIC_78184574
     * @return
     */
    @GET("anti.s")
    Call<SearchResponse> getMusicUrl(@Query("response") String response,
                                     @Query("rid") String rid,
                                     @Query("type") String type,
                                     @Query("br") String br,
                                     @Query("from") String from,
                                     @Query("t") String t,
                                     @Query("httpsStatus") String httpsStatus,
                                     @Query("reqId") String reqId);

    /**
     * 获取歌曲歌词
     *
     * @param musicId 歌曲ID：59141878
     * @return
     */
    @GET("newh5/singles/songinfoandlrc")
    Call<MusicInfoResponse> getMusicInfo(@Query("musicId") String musicId,
                                         @Query("httpsStatus") String httpsStatus,
                                         @Query("reqId") String reqId);

    // http://mobi.kuwo.cn/mobiweb.s?
    // prod=kwplayer_ar_10.3.1.0&
    // f=web&
    // num=40&
    // vipType=0&
    // notrace=0&
    // source=kwplayer_ar_10.3.1.0_40.apk&
    // type=rcm_discover&
    // platform=android&
    // kweexVersion=1.2.4&
    // apiv=3&uid=2519728212&tab=1&loginUid=0&vip_member=0
    // 获取每日推荐歌曲
    @GET("mobiweb.s")
    Call<TodayMusicResponse> getTodayMusic(@Query("prod") String prod,
                                           @Query("f") String f,
                                           @Query("num") String num,
                                           @Query("vipType") String vipType,
                                           @Query("notrace") String notrace,
                                           @Query("source") String source,
                                           @Query("type") String type,
                                           @Query("platform") String platform,
                                           @Query("kweexVersion") String kweexVersion,
                                           @Query("apiv") String apiv,
                                           @Query("uid") String uid,
                                           @Query("tab") String tab,
                                           @Query("loginUid") String loginUid,
                                           @Query("vip_member") String vip_member);


    // TODO https://nmobi.kuwo.cn/mobi.s?f=web&user=ebd0a48fed249fc2&android_id=ebd0a48fed249fc2&prod=kwplayer_ar_10.3.1.0&corp=kuwo&newver=3&vipver=10.3.1.0&source=kwplayer_ar_10.3.1.0_40.apk&p2p=1&q36=a71d960ab04bc4ecf2f4142c10001fc1610e&loginUid=0&loginSid=0&notrace=0&type=get_url_by_vid&vid=6383&quality=MP4&uid=2519728212
    // TODO 以上为获取音乐MV视频接口，返回数据格式比较特殊如下：
    // TODO format=mp4 bitrate=512 url=http://ar.player.rc01.sycdn.kuwo.cn/18a28466276c74b1055b982349bca953/638176b1/resource/m3/41/85/932229384.mp4 sig=4003894718664014205 quality=MP4 是一个String字符串


    /**
     * 获取音乐评论
     *
     * @param type get_comment
     * @param page 当前页码
     * @param rows 单页评论数量
     * @param sid  歌曲ID：59141878
     * @return
     */
    @GET("comment")
    Call<MusicCommentData> getMusicComment(@Query("type") String type,
                                           @Query("f") String f,
                                           @Query("page") String page,
                                           @Query("rows") String rows,
                                           @Query("digest") String digest,
                                           @Query("sid") String sid,
                                           @Query("uid") String uid,
                                           @Query("prod") String prod,
                                           @Query("httpsStatus") String httpsStatus,
                                           @Query("reqId") String reqId);

    @POST("api/v1/music/addMusicData")
    Call<ApiResponse<Object>> addMusicData(@Body MusicData data);


    /************************************new**************************************************/
    @GET("api/v2/music/searchMusic")
    Call<ApiResponse<List<MusicSearchData>>> searchMusic(@Query("content") String content);

    /**
     * 分页搜索歌曲
     *
     * @param content
     * @param pageNum
     * @param pageSize
     * @return
     */
    @GET("api/v2/music/searchMusicPage")
    Call<ApiResponse<List<MusicSearchData>>> searchMusicPage(@Query("content") String content,
                                                             @Query("pageNum") String pageNum,
                                                             @Query("pageSize") String pageSize);

    @GET("api/v2/music/listenMusic")
    Call<ApiResponse<MusicInfoData>> listenMusic(@Query("musicId") String musicId);

    @GET("api/v1/key/check")
    Call<ApiResponse<String>> checkKey(@Query("key") String key,
                                       @Query("deviceCode") String deviceCode,
                                       @Query("appid") String appid);

    /**
     * 检查更新
     *
     * @param appid
     * @param version
     * @return
     */
    @POST("api/v1/app/checkUpdate")
    Call<ApiResponse<UpdateData>> checkUpdate(@Query("appid") String appid,
                                              @Query("version") String version);
}
